<?php
/*
===============================================================================
	Contiene todas aquellas funciones con relacion a Materias que nesesiten
	manipular registros de la tabla de usuarios en la base de datos.
===============================================================================
 */
class Materia_Model extends CI_Model
{
	const TABLA_MATERIAS = 'materias_lx_np_2013';

	/*
	====================
	ObtenerTodos

	Consulta todos los registros de alumnos en la base de datos y los ordena por nombre de alumno
	acendiente.
	Retorna todos los registros.
	====================
	*/
	function ObtenerTodos()
	{
		DEFINE( 'MATERIAS_POR_PAGINA' , 20 );
		$this->db->order_by( "nombre" , "asc" );
		$res = $this->db->get(self::TABLA_MATERIAS , MATERIAS_POR_PAGINA , $this->uri->segment(3) );
		if ( $res->num_rows() > 0 ) {
			foreach ( $res->result() as $registro ) {
				$todosRegistros[] = $registro;
			}
		}
		return $todosRegistros;
	}

	/*
	====================
	BuscarPorMatricula

	Busca el registro mediante la matricula especificada y retorna todos los campos del registro.
	====================
	*/
	function BuscarPorMatricula($matricula)
	{
		$this->db->where('clave',$matricula);
		$res = $this->db->get(self::TABLA_MATERIAS);
		if( $res->num_rows() > 0 ){
			foreach ( $res->result() as $fila ) {
				$registro[] = $fila;
			}
			return $registro;
		}
	}

	/*
	====================
	BuscarPorAlumno

	Busca el/los registros que sean parecidos al nombre de la materia especificado.
	====================
	*/
	function BuscarPorMateria($materia)
	{
		$this->db->like('nombre',$materia,'both');
		$res = $this->db->get(self::TABLA_MATERIAS);
		if ( $res->num_rows() > 0 ) {
			foreach ($res->result() as $fila) {
				$registros[] = $fila;
			}
			return $registros;
		}
	}

	/*
	====================
	AgregarRegistrosMaterias

	Inserta las datos del arreglo asociado en la tabla de Materias (Ignora repetidos).
	====================
	*/
	function AgregarRegistrosMaterias($arregloDatos)
	{
		$insert_query = $this->db->insert_string(self::TABLA_MATERIAS, $arregloDatos);
    	$insert_query = str_replace('INSERT INTO', 'INSERT IGNORE INTO', $insert_query);
    	$this->db->query($insert_query);
    	return $this->db->affected_rows();
	}

/*
	====================
	ActualizarRegistroMateria

	Actualiza el nombre del alumno del registro con la matricula especificada.
	====================
	*/
	function ActualizarRegistroMateria($matricula, $materia)
	{
		$query = "UPDATE " . self::TABLA_MATERIAS . " SET nombre = ? WHERE clave = ?";
		$this->db->query($query,array($materia,$matricula));
		return $this->db->affected_rows();
	}

	/*
	====================
	EliminarRegistro

	Elimina el registro donde coincide con la matricula especificada.
	Retorna la cantidad de filas afectadas
	0 - Fallo
	1 - Exito
	====================
	*/
	function EliminarRegistro($matricula)
	{
		$query = "DELETE FROM " . self:: TABLA_MATERIAS . " WHERE clave = ?";
		$this->db->query($query,$matricula);
		return $this->db->affected_rows();
	}

	/*
	====================
	ContarRegistros

	Retorna la cantidad total de registros existentes de materias.
	====================
	*/
	function ContarRegistros()
	{
		$totalRegistros = $this->db->count_all(self::TABLA_MATERIAS);
		return $totalRegistros;
	}
}
?>